ICTSC2019 一次予選 問題解説: VyOSの設定が吹き飛んだ!

問題文

社内のラボ環境でVyOSにサーバ、クライアントを接続し、相互にIPv6で通信できる環境を構築していた。
ある日VyOSの再起動を行ったところ、設定ファイルの保存を行っていなかったためVyOSの設定が消えてしまった。
 
VyOSを以下の要件に従って設定を行いクライアント-サーバ間で通信ができるように復旧し、管理者用アカウントを追加して欲しい。
また、今後同様の事象が発生しないように対策を講じること。

条件

  • eth0は踏み台接続用のインタフェースなので設定を変更してはならない
  • タイムゾーンはJSTに設定すること
  • VyOSに以下のアカウントを新しく追加し、デフォルトのアカウント (vyos ユーザ) は削除すること
    • ユーザー名: ictsc2019
    • パスワード: ictsc2019

ゴール

  • 上記の要件に従って設定を行いクライアント-サーバ間で通信ができる
  • 再起動をしても設定が消えないようにする

情報

VyOS

  • IPアドレス: 192.168.0.1
  • ユーザー名: vyos
  • パスワード: vyos

クライアント

  • IPアドレス: 192.168.0.2
  • ユーザー名: admin
  • パスワード: admin

補足

  • クライアントは、RAにより 2001:db8:2000::/64 のプレフィックスのアドレスが割り振られる
  • サーバは、2001:db8:1000::2/64 がインターフェースに割り振られており、ゲートウェイとして 2001:db8:1000::1 が指定されている

解説・解答例

条件・ゴール通りに一つずつ設定を行っていきましょう。

設定の投入方法

VyOSにアクセスした後、設定を変更可能なモードに移行するにはconfigureコマンドを実行しましょう。設定変更に関するコマンドはコンフィグレーションモードで行います。

$ configure
[edit]
#

eth1とeth2に適切な設定を投入

クライアントとサーバ側のインターフェースに適切な設定を投入しましょう。
トポロジ図を参照すると、クライアント側のインターフェースはeth1、サーバ側はeth2だという事が分かります。

eth0の設定

補足情報からクライアントには2001:db8:2000::/64のアドレスがRAで配布される事が分かります。VyOSのeth1にRAの設定を投入します。なお、インタフェースに割り当てるアドレスは2001:db8:2000::/64内のアドレスであれば、どんなアドレスにしても問題ありません。ここではEUI-64で自動生成しています。
以下のコマンドで設定します。

# set interfaces ethernet eth1 ipv6 address eui64 2001:db8:2000::/64
# set interfaces ethernet eth1 ipv6 router-advert send-advert true
# set interfaces ethernet eth1 ipv6 router-advert prefix 2001:db8:2000::/64
# commit

eth1の設定

補足情報からサーバのインタフェースは2001:db8:1000::2/64が静的に割り振られており、ゲートウェイとして2001:db8:1000::1が設定されていると分かります。
VyOSのeth2に2001:db8:1000::1/64を静的に設定しましょう。

# set interfaces ethernet eth2 address 2001:db8:1000::1/64
# commit

アカウントの追加と削除

デフォルトのvyos:vyosを削除し、管理用にictsc2019:ictsc2019のアカウントを追加します。
ログイン状態にあるアカウントを削除する事はできないので、先にアカウントの追加を行います。

# set system login user ictsc2019 authentication plaintext-password ictsc2019
# set system login user ictsc2019 level admin
# commit

一旦ログアウトして、ictsc2019ユーザでSSH接続します。
ログインできたらvyosユーザを削除して完了です。

# delete system login user vyos
# commit

タイムゾーンの設定

これはコマンド一発です。

# set system time-zone Asia/Tokyo
# commit

設定の保存

ここまで設定を終えて、クライアントからサーバへの疎通が取れる事を確認したら、設定を保存しておきましょう。
これもコマンド一発です。

# save